home *** CD-ROM | disk | FTP | other *** search
- /* Interface between the server and the rest of CVS. */
-
- /* Miscellaneous stuff which isn't actually particularly server-specific. */
- #ifndef STDIN_FILENO
- #define STDIN_FILENO 0
- #define STDOUT_FILENO 1
- #define STDERR_FILENO 2
- #endif
-
- #ifdef SERVER_SUPPORT
-
- /*
- * Nonzero if we are using the server. Used by various places to call
- * server-specific functions.
- */
- extern int server_active;
- extern int server_expanding;
-
- /* Server functions exported to the rest of CVS. */
-
- /* Run the server. */
- extern int server PROTO((int argc, char **argv));
-
- /* We have a new Entries line for a file. TAG or DATE can be NULL. */
- extern void server_register
- PROTO((char *name, char *version, char *timestamp,
- char *options, char *tag, char *date, char *conflict));
-
- /*
- * We want to nuke the Entries line for a file, and (unless
- * server_scratch_entry_only is subsequently called) the file itself.
- */
- extern void server_scratch PROTO((char *name));
-
- /*
- * The file which just had server_scratch called on it needs to have only
- * the Entries line removed, not the file itself.
- */
- extern void server_scratch_entry_only PROTO((void));
-
- /*
- * We just successfully checked in FILE (which is just the bare
- * filename, with no directory). REPOSITORY is the directory for the
- * repository.
- */
- extern void server_checked_in
- PROTO((char *file, char *update_dir, char *repository));
-
- extern void server_copy_file
- PROTO((char *file, char *update_dir, char *repository, char *newfile));
-
- /*
- * We just successfully updated FILE (bare filename, no directory).
- * REPOSITORY is the directory for the repository. This is called
- * after server_register or server_scratch, in the latter case the
- * file is to be removed. UPDATED indicates whether the file is now
- * up to date (SERVER_UPDATED, yes, SERVER_MERGED, no, SERVER_PATCHED,
- * yes, but file is a diff from user version to repository version).
- */
- enum server_updated_arg4 {SERVER_UPDATED, SERVER_MERGED, SERVER_PATCHED};
- extern void server_updated
- PROTO((char *file, char *update_dir, char *repository,
- enum server_updated_arg4 updated, struct stat *,
- unsigned char *checksum));
-
- /* Set the Entries.Static flag. */
- extern void server_set_entstat PROTO((char *update_dir, char *repository));
- /* Clear it. */
- extern void server_clear_entstat PROTO((char *update_dir, char *repository));
-
- /* Set or clear a per-directory sticky tag or date. */
- extern void server_set_sticky PROTO((char *update_dir, char *repository,
- char *tag,
- char *date));
- /* Send Template response. */
- extern void server_template PROTO ((char *, char *));
-
- extern void server_update_entries
- PROTO((char *file, char *update_dir, char *repository,
- enum server_updated_arg4 updated));
-
- enum progs {PROG_CHECKIN, PROG_UPDATE};
- extern void server_prog PROTO((char *, char *, enum progs));
- extern void server_cleanup PROTO((int sig));
-
- #ifdef SERVER_FLOWCONTROL
- /* Pause if it's convenient to avoid memory blowout */
- extern void server_pause_check PROTO((void));
- #endif /* SERVER_FLOWCONTROL */
-
- #endif /* SERVER_SUPPORT */
-
- /* Stuff shared with the client. */
- struct request
- {
- /* Name of the request. */
- char *name;
-
- #ifdef SERVER_SUPPORT
- /*
- * Function to carry out the request. ARGS is the text of the command
- * after name and, if present, a single space, have been stripped off.
- */
- void (*func) PROTO((char *args));
- #endif
-
- /* Stuff for use by the client. */
- enum {
- /*
- * Failure to implement this request can imply a fatal
- * error. This should be set only for commands which were in the
- * original version of the protocol; it should not be set for new
- * commands.
- */
- rq_essential,
-
- /* Some servers might lack this request. */
- rq_optional,
-
- /*
- * Set by the client to one of the following based on what this
- * server actually supports.
- */
- rq_supported,
- rq_not_supported,
-
- /*
- * If the server supports this request, and we do too, tell the
- * server by making the request.
- */
- rq_enableme
- } status;
- };
-
- /* Table of requests ending with an entry with a NULL name. */
- extern struct request requests[];
-
- extern int use_unchanged;
-